// 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
// 访问者模式是：把不变的固定起来，变化的开放出去。

// 元素类
class ConElement{
    constructor(){

    }

    operation(){
        console.log("访问本类")
    }

    accept(visitor:Visitor){
        visitor.visitElement(this);
    }
}



class Visitor{
    constructor(){

    }
    visitElement(element:ConElement){
        element.operation()
    }
}

let visitor = new Visitor();
let ele = new ConElement();

ele.accept(visitor);